package com.itheima.health.dao;

import com.itheima.health.pojo.Order;
import com.itheima.health.vo.OrderSubmitParam;
import com.itheima.health.pojo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 预约DAO
 */
@Mapper
public interface OrderDao {

   OrderInfo selectById(@Param("id") Integer id);



    /**
     * 根据会员查询唯一绑定套餐ID
     * @return
     */
    List<Integer> setmealIds();
    /**
     * 根据套餐ID 查询预约表每个套餐分别的个数
     * @return
     */
    Integer countOrderADNSetmeal(@Param("setmealId") Integer setmealId);
    /**
     * 根据套餐ID 查询预约表每个套餐名称
     * @return
     */
    String setmealNameOrderADNSetmeal(@Param("setmealId") Integer setmealId);

    /**
     * 今日预约数
     * @param format
     * @return
     */
    Integer todayVisitsNumber(String format);
    /**
     * 到诊人数
     * @param format
     * @return
     */
    Integer todayOrderNumber(String format);

    /**
     * 本周预约数
     * @return
     */
    Integer thisWeekVisitsNumber();
    /**
     * 本周到诊人数
     * @return
     */
    Integer thisWeekOrderNumber();
    /**
     * 本月预约数
     * @return
     */
    Integer thisMonthVisitsNumber(String format);
    /**
     * 本月到诊人数
     * @return
     */
    Integer thisMonthOrderNumber(String format);

    /**
     * 查询提交预约日期是否重复
     *
     * @param userId    刚提交预约单用户的id
     * @param orderDate 预约的时间
     * @param setMealId 预约的套餐
     * @return 返回查询结果
     */
    Order selectOrdeDate(@Param("userId") int userId, @Param("orderDate") Date orderDate, @Param("setMealId") Integer setMealId);

    /**
     * 添加预约表单到数据库中
     *
     * @param orderSubmitParam 用户提交的预约表单
     * @return 返回id
     */
    void add(@Param("orderSubmitParam") OrderSubmitParam orderSubmitParam, @Param("userId") int userId);

    /**
     * 查询刚添加进数据库的预约表单
     *
     * @param id 刚添加进数据库的预约表单
     * @return 返回表单
     */
    Order seleceByIdupdata(@Param("id") int id);

    String selectByIdUserName(int id);

    String selectByIdGroupName(int id);
}
